package com.dxl.system.service;

import com.dxl.system.model.Label;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dxl.base.Result;
import java.util.List;

/**
 * <b> 标签服务接口
 * </b><br><br><i>Description</i> :
 * <br>Date: 2019-09-25    <br>Author : dxl
 */
public interface LabelService extends IService<Label>   {

    /**
     * <b> 插入标签
     * </b><br><br><i>Description</i> : 不能为空：标签名称-label_name ；不能重复：标签名称-label_name  
     * @param label Label
     * @return com.dxl.base.Result Label
     * <br><br>Date: 2019-09-25    <br>Author : dxl
     */
    public Result addOne(Label label);

    /**
     * <b> 分配文件给标签
     * </b><br><br><i>Description</i> :
     * @param labelId Integer，noteIds -List: Integer
     * @return com.dxl.base.Result Label
     * <br><br>Date: 2019-09-25    <br>Author : dxl
     */
    public Result addNoteToLabel(Integer labelId, List<Integer> noteIds);

    /**
     * <b> 删除标签
     * </b><br><br><i>Description</i> : 
     * @param labelIds List: Integer
     * @return com.dxl.base.Result int
     * <br><br>Date: 2019-09-25    <br>Author : dxl
     */
    public Result delByIds(List<Integer> labelIds);

    /**
     * <b> 移除标签中文件
     * </b><br><br><i>Description</i> :
     * @param labelId Integer，noteIds -List: Integer
     * @return com.dxl.base.Result int
     * <br><br>Date: 2019-09-25    <br>Author : dxl
     */
    public Result delNoteFromLabel(Integer labelId, List<Integer> noteIds);

    /**
     * <b> 移除标签中全部文件
     * </b><br><br><i>Description</i> :
     * @param labelId Integer
     * @return com.dxl.base.Result int
     * <br><br>Date: 2019-09-25    <br>Author : dxl
     */
    public Result delAllNoteFromLabel(Integer labelId);

    /**
     * <b> 编辑标签
     * </b><br><br><i>Description</i> : 不能重复：标签名称-label_name 
     * @param label Label
     * @return com.dxl.base.Result Label
     * <br><br>Date: 2019-09-25    <br>Author : dxl
     */
    public Result editOne(Label label);

    /**
     * <b> ID查询标签
     * </b><br><br><i>Description</i> : 
     * @param labelId Integer
     * @return com.dxl.base.Result: Label
     * <br><br>Date: 2019-09-25    <br>Author : dxl
     */
    public Result getById(Integer labelId);

    /**
     * <b> 条件查询标签
     * </b><br><br><i>Description</i> : 
     * @param label Label
     * @return com.dxl.base.Result List: Label
     * <br><br>Date: 2019-09-25    <br>Author : dxl
     */
    public Result getList(Label label);

    /**
     * <b> 分页条件查询标签
     * </b><br><br><i>Description</i> : 
     * @param label Label, currentPage -Integer, pageSize -Integer
     * @return com.dxl.base.Result List: Label
     * <br><br>Date: 2019-09-25     <br>Author : dxl
     */
    public Result getListByPage(Label label, Integer currentPage, Integer pageSize);

    /**
     * <b> 查询标签中全部文件
     * </b><br><br><i>Description</i> : 联表
     * @param labelId Integer
     * @return com.dxl.base.Result List: Note
     * <br><br>Date: 2019-09-25    <br>Author : dxl
     */
    public Result getAllNoteInLabel(Integer labelId);

    /**
     * <b> 分页查询标签中全部文件
     * </b><br><br><i>Description</i> : 联表
     * @param labelId Integer, currentPage -Integer, pageSize -Integer
     * @return com.dxl.base.Result List: Note
     * <br><br>Date: 2019-09-25    <br>Author : dxl
     */
    public Result getAllNoteInLabelByPage(Integer labelId, Integer currentPage, Integer pageSize);

    /**
     * <b>  模糊查询标签
     * </b><br><br><i>Description</i> : 模糊查询；模糊字段(模式：单字段)：全匹配：label_name-标签名称 
     * @param label Label
     * @return com.dxl.base.Result List: Label
     * <br><br>Date: 2019-09-25    <br>Author : dxl
     */
    public Result getLikeLabel(Label label);

    /**
     * <b> 分页模糊查询标签
     * </b><br><br><i>Description</i> : 模糊查询；模糊字段(模式：单字段)：全匹配：label_name-标签名称 
     * @param label Label, currentPage -Integer, pageSize -Integer
     * @return com.dxl.base.Result List: Label
     * <br><br>Date: 2019-09-25     <br>Author : dxl
     */
    public Result getLikeLabelByPage(Label label, Integer currentPage, Integer pageSize);

    /**
     * <b> 标签能否新增
     * </b><br><br><i>Description</i> : 不能为空：标签名称-label_name ；不能重复：标签名称-label_name  
     * @param label Label
     * @return com.dxl.base.Result boolean
     * <br><br>Date: 2019-09-25     <br>Author : dxl
     */
    public Result isLabelAddable(Label label);

    /**
     * <b> 标签能否编辑
     * </b><br><br><i>Description</i> : 不能重复：标签名称-label_name 
     * @param label Label
     * @return com.dxl.base.Result boolean
     * <br><br>Date: 2019-09-25     <br>Author : dxl
     */
    public Result isLabelEditable(Label label);

    /**
     * <b> 给标签字体、边框随机颜色
     * </b><br><br><i>Description</i> :
     * @param labelList
     * @return java.util.List<com.dxl.system.model.Label>
     * <br><br>Date: 2019/9/29 11:00     <br>Author : dxl
     */
    public List<Label> colorLabel(List<Label> labelList);

}
